package com.springtest.jdbc;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

public class JdbcTemplateTest {
//    public static void main(String[] args) {
//        /**
//         * 使用 execute()方法建表
//         */
//        //加载配置文件
//        ApplicationContext applicationContext =new ClassPathXmlApplicationContext("jdbc.xml");
//        //获取 JdbcTemplate 实例
//        JdbcTemplate jdbcTemplate=(JdbcTemplate) applicationContext.getBean("jdbcTemplate");
//        //使用execute()方法执行SQL语句，创建用户账户管理表account
//        jdbcTemplate.execute("create table account("+
//                "id int primary key auto_increment,"+
//                "username varchar(50),"+
//                "balance double)");
//        System.out.println("账户表account创建成功！");
//    }
    @Test
    public void mainTest() {
    // 加载配置文件
        ApplicationContext applicationContext =new ClassPathXmlApplicationContext("jdbc.xml");
    // 获取 JdbcTemplate 实例
        JdbcTemplate jdTemplate =(JdbcTemplate) applicationContext.getBean("jdbcTemplate");
    // 使用 execute()方法执行 SQL 语句，创建用户账户管理表 account
        jdTemplate.execute("create table account(" +
                "id int primary key auto_increment," +
                "username varchar(50)," +
                "balance double)");
        System.out.println("账户表 account 创建成功！");
    }


    @Test
    public void addAccountTest() {
        // 加载配置文件
        ApplicationContext applicationContext =
                new ClassPathXmlApplicationContext("jdbc.xml");
        // 获取 AccountDao 实例
        AccountDao accountDao =
                (AccountDao) applicationContext.getBean("accountDao");
        // 创建 Account 对象，并向 Account 对象中添加数据
        Account account = new Account();
        account.setUsername("tom");
        account.setBalance(1000.00);
       // 执行 addAccount()方法，并获取返回结果
        int num = accountDao.addAccount(account);
        if (num > 0) {
            System.out.println("成功插入了" + num + "条数据！");
        } else {
            System.out.println("插入操作执行失败！");
        }
    }

    @Test
    public void findAccountByIdTest() {
        // 加载配置文件
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
        // 获取 AccountDao 实例
        AccountDao accountDao = (AccountDao) applicationContext.getBean("accountDao");
        // 执行 findAccountById()方法
        Account account = accountDao.findAccountById(1);
        System.out.println(account);
    }

    @Test
    public void findAllAccountTest() {
        // 加载配置文件
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("jdbc.xml");
        // 获取 AccountDao 实例
        AccountDao accountDao = (AccountDao) applicationContext.getBean("accountDao");
        // 执行 findAllAccount()方法，获取 Account 对象的集合
        List<Account> account = accountDao.findAllAccount();
        // 循环输出集合中的对象
        for (Account act : account) {
            System.out.println(act);
        }
    }
}
